/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_matmul_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>
#include <vector>

#include "test/matmul/fixture.h"
#include "test/types/kernel_data_types.h"
#include "test/types/to_gtest_types.h"

using DataTypeList = sycldnn::types::KernelDataTypes;
using GTestTypeList = sycldnn::types::ToGTestTypes<DataTypeList>::type;

template <typename DataType>
using MatmulBatch1Beta0FalseTrue = MatmulFixture<DataType, false, true>;
TYPED_TEST_SUITE(MatmulBatch1Beta0FalseTrue, GTestTypeList);
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  2485.,   6699.,
      10913.,  15127.,  19341.,  23555.,  27769.,  31983.,  36197.,  40411.,
      44625.,  48839.,  53053.,  57267.,  3955.,   10913.,  17871.,  24829.,
      31787.,  38745.,  45703.,  52661.,  59619.,  66577.,  73535.,  80493.,
      87451.,  94409.,  5425.,   15127.,  24829.,  34531.,  44233.,  53935.,
      63637.,  73339.,  83041.,  92743.,  102445., 112147., 121849., 131551.,
      6895.,   19341.,  31787.,  44233.,  56679.,  69125.,  81571.,  94017.,
      106463., 118909., 131355., 143801., 156247., 168693., 8365.,   23555.,
      38745.,  53935.,  69125.,  84315.,  99505.,  114695., 129885., 145075.,
      160265., 175455., 190645., 205835., 9835.,   27769.,  45703.,  63637.,
      81571.,  99505.,  117439., 135373., 153307., 171241., 189175., 207109.,
      225043., 242977., 11305.,  31983.,  52661.,  73339.,  94017.,  114695.,
      135373., 156051., 176729., 197407., 218085., 238763., 259441., 280119.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 14245.,  40411.,
      66577.,  92743.,  118909., 145075., 171241., 197407., 223573., 249739.,
      275905., 302071., 328237., 354403., 15715.,  44625.,  73535.,  102445.,
      131355., 160265., 189175., 218085., 246995., 275905., 304815., 333725.,
      362635., 391545., 17185.,  48839.,  80493.,  112147., 143801., 175455.,
      207109., 238763., 270417., 302071., 333725., 365379., 397033., 428687.,
      18655.,  53053.,  87451.,  121849., 156247., 190645., 225043., 259441.,
      293839., 328237., 362635., 397033., 431431., 465829., 20125.,  57267.,
      94409.,  131551., 168693., 205835., 242977., 280119., 317261., 354403.,
      391545., 428687., 465829., 502971.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  21595.,  2485.,
      6699.,   10913.,  15127.,  19341.,  23555.,  27769.,  31983.,  36197.,
      40411.,  44625.,  48839.,  53053.,  57267.,  61481.,  3955.,   10913.,
      17871.,  24829.,  31787.,  38745.,  45703.,  52661.,  59619.,  66577.,
      73535.,  80493.,  87451.,  94409.,  101367., 5425.,   15127.,  24829.,
      34531.,  44233.,  53935.,  63637.,  73339.,  83041.,  92743.,  102445.,
      112147., 121849., 131551., 141253., 6895.,   19341.,  31787.,  44233.,
      56679.,  69125.,  81571.,  94017.,  106463., 118909., 131355., 143801.,
      156247., 168693., 181139., 8365.,   23555.,  38745.,  53935.,  69125.,
      84315.,  99505.,  114695., 129885., 145075., 160265., 175455., 190645.,
      205835., 221025., 9835.,   27769.,  45703.,  63637.,  81571.,  99505.,
      117439., 135373., 153307., 171241., 189175., 207109., 225043., 242977.,
      260911., 11305.,  31983.,  52661.,  73339.,  94017.,  114695., 135373.,
      156051., 176729., 197407., 218085., 238763., 259441., 280119., 300797.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 340683., 14245.,
      40411.,  66577.,  92743.,  118909., 145075., 171241., 197407., 223573.,
      249739., 275905., 302071., 328237., 354403., 380569., 15715.,  44625.,
      73535.,  102445., 131355., 160265., 189175., 218085., 246995., 275905.,
      304815., 333725., 362635., 391545., 420455., 17185.,  48839.,  80493.,
      112147., 143801., 175455., 207109., 238763., 270417., 302071., 333725.,
      365379., 397033., 428687., 460341., 18655.,  53053.,  87451.,  121849.,
      156247., 190645., 225043., 259441., 293839., 328237., 362635., 397033.,
      431431., 465829., 500227., 20125.,  57267.,  94409.,  131551., 168693.,
      205835., 242977., 280119., 317261., 354403., 391545., 428687., 465829.,
      502971., 540113.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  21595.,  23065.,
      2485.,   6699.,   10913.,  15127.,  19341.,  23555.,  27769.,  31983.,
      36197.,  40411.,  44625.,  48839.,  53053.,  57267.,  61481.,  65695.,
      3955.,   10913.,  17871.,  24829.,  31787.,  38745.,  45703.,  52661.,
      59619.,  66577.,  73535.,  80493.,  87451.,  94409.,  101367., 108325.,
      5425.,   15127.,  24829.,  34531.,  44233.,  53935.,  63637.,  73339.,
      83041.,  92743.,  102445., 112147., 121849., 131551., 141253., 150955.,
      6895.,   19341.,  31787.,  44233.,  56679.,  69125.,  81571.,  94017.,
      106463., 118909., 131355., 143801., 156247., 168693., 181139., 193585.,
      8365.,   23555.,  38745.,  53935.,  69125.,  84315.,  99505.,  114695.,
      129885., 145075., 160265., 175455., 190645., 205835., 221025., 236215.,
      9835.,   27769.,  45703.,  63637.,  81571.,  99505.,  117439., 135373.,
      153307., 171241., 189175., 207109., 225043., 242977., 260911., 278845.,
      11305.,  31983.,  52661.,  73339.,  94017.,  114695., 135373., 156051.,
      176729., 197407., 218085., 238763., 259441., 280119., 300797., 321475.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 340683., 364105.,
      14245.,  40411.,  66577.,  92743.,  118909., 145075., 171241., 197407.,
      223573., 249739., 275905., 302071., 328237., 354403., 380569., 406735.,
      15715.,  44625.,  73535.,  102445., 131355., 160265., 189175., 218085.,
      246995., 275905., 304815., 333725., 362635., 391545., 420455., 449365.,
      17185.,  48839.,  80493.,  112147., 143801., 175455., 207109., 238763.,
      270417., 302071., 333725., 365379., 397033., 428687., 460341., 491995.,
      18655.,  53053.,  87451.,  121849., 156247., 190645., 225043., 259441.,
      293839., 328237., 362635., 397033., 431431., 465829., 500227., 534625.,
      20125.,  57267.,  94409.,  131551., 168693., 205835., 242977., 280119.,
      317261., 354403., 391545., 428687., 465829., 502971., 540113., 577255.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  3040.,   8215.,
      13390.,  18565.,  23740.,  28915.,  34090.,  39265.,  44440.,  49615.,
      54790.,  59965.,  65140.,  70315.,  4840.,   13390.,  21940.,  30490.,
      39040.,  47590.,  56140.,  64690.,  73240.,  81790.,  90340.,  98890.,
      107440., 115990., 6640.,   18565.,  30490.,  42415.,  54340.,  66265.,
      78190.,  90115.,  102040., 113965., 125890., 137815., 149740., 161665.,
      8440.,   23740.,  39040.,  54340.,  69640.,  84940.,  100240., 115540.,
      130840., 146140., 161440., 176740., 192040., 207340., 10240.,  28915.,
      47590.,  66265.,  84940.,  103615., 122290., 140965., 159640., 178315.,
      196990., 215665., 234340., 253015., 12040.,  34090.,  56140.,  78190.,
      100240., 122290., 144340., 166390., 188440., 210490., 232540., 254590.,
      276640., 298690., 13840.,  39265.,  64690.,  90115.,  115540., 140965.,
      166390., 191815., 217240., 242665., 268090., 293515., 318940., 344365.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 17440.,  49615.,
      81790.,  113965., 146140., 178315., 210490., 242665., 274840., 307015.,
      339190., 371365., 403540., 435715., 19240.,  54790.,  90340.,  125890.,
      161440., 196990., 232540., 268090., 303640., 339190., 374740., 410290.,
      445840., 481390., 21040.,  59965.,  98890.,  137815., 176740., 215665.,
      254590., 293515., 332440., 371365., 410290., 449215., 488140., 527065.,
      22840.,  65140.,  107440., 149740., 192040., 234340., 276640., 318940.,
      361240., 403540., 445840., 488140., 530440., 572740., 24640.,  70315.,
      115990., 161665., 207340., 253015., 298690., 344365., 390040., 435715.,
      481390., 527065., 572740., 618415.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  26440.,  3040.,
      8215.,   13390.,  18565.,  23740.,  28915.,  34090.,  39265.,  44440.,
      49615.,  54790.,  59965.,  65140.,  70315.,  75490.,  4840.,   13390.,
      21940.,  30490.,  39040.,  47590.,  56140.,  64690.,  73240.,  81790.,
      90340.,  98890.,  107440., 115990., 124540., 6640.,   18565.,  30490.,
      42415.,  54340.,  66265.,  78190.,  90115.,  102040., 113965., 125890.,
      137815., 149740., 161665., 173590., 8440.,   23740.,  39040.,  54340.,
      69640.,  84940.,  100240., 115540., 130840., 146140., 161440., 176740.,
      192040., 207340., 222640., 10240.,  28915.,  47590.,  66265.,  84940.,
      103615., 122290., 140965., 159640., 178315., 196990., 215665., 234340.,
      253015., 271690., 12040.,  34090.,  56140.,  78190.,  100240., 122290.,
      144340., 166390., 188440., 210490., 232540., 254590., 276640., 298690.,
      320740., 13840.,  39265.,  64690.,  90115.,  115540., 140965., 166390.,
      191815., 217240., 242665., 268090., 293515., 318940., 344365., 369790.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 418840., 17440.,
      49615.,  81790.,  113965., 146140., 178315., 210490., 242665., 274840.,
      307015., 339190., 371365., 403540., 435715., 467890., 19240.,  54790.,
      90340.,  125890., 161440., 196990., 232540., 268090., 303640., 339190.,
      374740., 410290., 445840., 481390., 516940., 21040.,  59965.,  98890.,
      137815., 176740., 215665., 254590., 293515., 332440., 371365., 410290.,
      449215., 488140., 527065., 565990., 22840.,  65140.,  107440., 149740.,
      192040., 234340., 276640., 318940., 361240., 403540., 445840., 488140.,
      530440., 572740., 615040., 24640.,  70315.,  115990., 161665., 207340.,
      253015., 298690., 344365., 390040., 435715., 481390., 527065., 572740.,
      618415., 664090.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  26440.,  28240.,
      3040.,   8215.,   13390.,  18565.,  23740.,  28915.,  34090.,  39265.,
      44440.,  49615.,  54790.,  59965.,  65140.,  70315.,  75490.,  80665.,
      4840.,   13390.,  21940.,  30490.,  39040.,  47590.,  56140.,  64690.,
      73240.,  81790.,  90340.,  98890.,  107440., 115990., 124540., 133090.,
      6640.,   18565.,  30490.,  42415.,  54340.,  66265.,  78190.,  90115.,
      102040., 113965., 125890., 137815., 149740., 161665., 173590., 185515.,
      8440.,   23740.,  39040.,  54340.,  69640.,  84940.,  100240., 115540.,
      130840., 146140., 161440., 176740., 192040., 207340., 222640., 237940.,
      10240.,  28915.,  47590.,  66265.,  84940.,  103615., 122290., 140965.,
      159640., 178315., 196990., 215665., 234340., 253015., 271690., 290365.,
      12040.,  34090.,  56140.,  78190.,  100240., 122290., 144340., 166390.,
      188440., 210490., 232540., 254590., 276640., 298690., 320740., 342790.,
      13840.,  39265.,  64690.,  90115.,  115540., 140965., 166390., 191815.,
      217240., 242665., 268090., 293515., 318940., 344365., 369790., 395215.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 418840., 447640.,
      17440.,  49615.,  81790.,  113965., 146140., 178315., 210490., 242665.,
      274840., 307015., 339190., 371365., 403540., 435715., 467890., 500065.,
      19240.,  54790.,  90340.,  125890., 161440., 196990., 232540., 268090.,
      303640., 339190., 374740., 410290., 445840., 481390., 516940., 552490.,
      21040.,  59965.,  98890.,  137815., 176740., 215665., 254590., 293515.,
      332440., 371365., 410290., 449215., 488140., 527065., 565990., 604915.,
      22840.,  65140.,  107440., 149740., 192040., 234340., 276640., 318940.,
      361240., 403540., 445840., 488140., 530440., 572740., 615040., 657340.,
      24640.,  70315.,  115990., 161665., 207340., 253015., 298690., 344365.,
      390040., 435715., 481390., 527065., 572740., 618415., 664090., 709765.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  3672.,   9944.,
      16216.,  22488.,  28760.,  35032.,  41304.,  47576.,  53848.,  60120.,
      66392.,  72664.,  78936.,  85208.,  5848.,   16216.,  26584.,  36952.,
      47320.,  57688.,  68056.,  78424.,  88792.,  99160.,  109528., 119896.,
      130264., 140632., 8024.,   22488.,  36952.,  51416.,  65880.,  80344.,
      94808.,  109272., 123736., 138200., 152664., 167128., 181592., 196056.,
      10200.,  28760.,  47320.,  65880.,  84440.,  103000., 121560., 140120.,
      158680., 177240., 195800., 214360., 232920., 251480., 12376.,  35032.,
      57688.,  80344.,  103000., 125656., 148312., 170968., 193624., 216280.,
      238936., 261592., 284248., 306904., 14552.,  41304.,  68056.,  94808.,
      121560., 148312., 175064., 201816., 228568., 255320., 282072., 308824.,
      335576., 362328., 16728.,  47576.,  78424.,  109272., 140120., 170968.,
      201816., 232664., 263512., 294360., 325208., 356056., 386904., 417752.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 21080.,  60120.,
      99160.,  138200., 177240., 216280., 255320., 294360., 333400., 372440.,
      411480., 450520., 489560., 528600., 23256.,  66392.,  109528., 152664.,
      195800., 238936., 282072., 325208., 368344., 411480., 454616., 497752.,
      540888., 584024., 25432.,  72664.,  119896., 167128., 214360., 261592.,
      308824., 356056., 403288., 450520., 497752., 544984., 592216., 639448.,
      27608.,  78936.,  130264., 181592., 232920., 284248., 335576., 386904.,
      438232., 489560., 540888., 592216., 643544., 694872., 29784.,  85208.,
      140632., 196056., 251480., 306904., 362328., 417752., 473176., 528600.,
      584024., 639448., 694872., 750296.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  31960.,  3672.,
      9944.,   16216.,  22488.,  28760.,  35032.,  41304.,  47576.,  53848.,
      60120.,  66392.,  72664.,  78936.,  85208.,  91480.,  5848.,   16216.,
      26584.,  36952.,  47320.,  57688.,  68056.,  78424.,  88792.,  99160.,
      109528., 119896., 130264., 140632., 151000., 8024.,   22488.,  36952.,
      51416.,  65880.,  80344.,  94808.,  109272., 123736., 138200., 152664.,
      167128., 181592., 196056., 210520., 10200.,  28760.,  47320.,  65880.,
      84440.,  103000., 121560., 140120., 158680., 177240., 195800., 214360.,
      232920., 251480., 270040., 12376.,  35032.,  57688.,  80344.,  103000.,
      125656., 148312., 170968., 193624., 216280., 238936., 261592., 284248.,
      306904., 329560., 14552.,  41304.,  68056.,  94808.,  121560., 148312.,
      175064., 201816., 228568., 255320., 282072., 308824., 335576., 362328.,
      389080., 16728.,  47576.,  78424.,  109272., 140120., 170968., 201816.,
      232664., 263512., 294360., 325208., 356056., 386904., 417752., 448600.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 508120., 21080.,
      60120.,  99160.,  138200., 177240., 216280., 255320., 294360., 333400.,
      372440., 411480., 450520., 489560., 528600., 567640., 23256.,  66392.,
      109528., 152664., 195800., 238936., 282072., 325208., 368344., 411480.,
      454616., 497752., 540888., 584024., 627160., 25432.,  72664.,  119896.,
      167128., 214360., 261592., 308824., 356056., 403288., 450520., 497752.,
      544984., 592216., 639448., 686680., 27608.,  78936.,  130264., 181592.,
      232920., 284248., 335576., 386904., 438232., 489560., 540888., 592216.,
      643544., 694872., 746200., 29784.,  85208.,  140632., 196056., 251480.,
      306904., 362328., 417752., 473176., 528600., 584024., 639448., 694872.,
      750296., 805720.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M14xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  31960.,  34136.,
      3672.,   9944.,   16216.,  22488.,  28760.,  35032.,  41304.,  47576.,
      53848.,  60120.,  66392.,  72664.,  78936.,  85208.,  91480.,  97752.,
      5848.,   16216.,  26584.,  36952.,  47320.,  57688.,  68056.,  78424.,
      88792.,  99160.,  109528., 119896., 130264., 140632., 151000., 161368.,
      8024.,   22488.,  36952.,  51416.,  65880.,  80344.,  94808.,  109272.,
      123736., 138200., 152664., 167128., 181592., 196056., 210520., 224984.,
      10200.,  28760.,  47320.,  65880.,  84440.,  103000., 121560., 140120.,
      158680., 177240., 195800., 214360., 232920., 251480., 270040., 288600.,
      12376.,  35032.,  57688.,  80344.,  103000., 125656., 148312., 170968.,
      193624., 216280., 238936., 261592., 284248., 306904., 329560., 352216.,
      14552.,  41304.,  68056.,  94808.,  121560., 148312., 175064., 201816.,
      228568., 255320., 282072., 308824., 335576., 362328., 389080., 415832.,
      16728.,  47576.,  78424.,  109272., 140120., 170968., 201816., 232664.,
      263512., 294360., 325208., 356056., 386904., 417752., 448600., 479448.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 508120., 543064.,
      21080.,  60120.,  99160.,  138200., 177240., 216280., 255320., 294360.,
      333400., 372440., 411480., 450520., 489560., 528600., 567640., 606680.,
      23256.,  66392.,  109528., 152664., 195800., 238936., 282072., 325208.,
      368344., 411480., 454616., 497752., 540888., 584024., 627160., 670296.,
      25432.,  72664.,  119896., 167128., 214360., 261592., 308824., 356056.,
      403288., 450520., 497752., 544984., 592216., 639448., 686680., 733912.,
      27608.,  78936.,  130264., 181592., 232920., 284248., 335576., 386904.,
      438232., 489560., 540888., 592216., 643544., 694872., 746200., 797528.,
      29784.,  85208.,  140632., 196056., 251480., 306904., 362328., 417752.,
      473176., 528600., 584024., 639448., 694872., 750296., 805720., 861144.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  2485.,   6699.,
      10913.,  15127.,  19341.,  23555.,  27769.,  31983.,  36197.,  40411.,
      44625.,  48839.,  53053.,  57267.,  3955.,   10913.,  17871.,  24829.,
      31787.,  38745.,  45703.,  52661.,  59619.,  66577.,  73535.,  80493.,
      87451.,  94409.,  5425.,   15127.,  24829.,  34531.,  44233.,  53935.,
      63637.,  73339.,  83041.,  92743.,  102445., 112147., 121849., 131551.,
      6895.,   19341.,  31787.,  44233.,  56679.,  69125.,  81571.,  94017.,
      106463., 118909., 131355., 143801., 156247., 168693., 8365.,   23555.,
      38745.,  53935.,  69125.,  84315.,  99505.,  114695., 129885., 145075.,
      160265., 175455., 190645., 205835., 9835.,   27769.,  45703.,  63637.,
      81571.,  99505.,  117439., 135373., 153307., 171241., 189175., 207109.,
      225043., 242977., 11305.,  31983.,  52661.,  73339.,  94017.,  114695.,
      135373., 156051., 176729., 197407., 218085., 238763., 259441., 280119.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 14245.,  40411.,
      66577.,  92743.,  118909., 145075., 171241., 197407., 223573., 249739.,
      275905., 302071., 328237., 354403., 15715.,  44625.,  73535.,  102445.,
      131355., 160265., 189175., 218085., 246995., 275905., 304815., 333725.,
      362635., 391545., 17185.,  48839.,  80493.,  112147., 143801., 175455.,
      207109., 238763., 270417., 302071., 333725., 365379., 397033., 428687.,
      18655.,  53053.,  87451.,  121849., 156247., 190645., 225043., 259441.,
      293839., 328237., 362635., 397033., 431431., 465829., 20125.,  57267.,
      94409.,  131551., 168693., 205835., 242977., 280119., 317261., 354403.,
      391545., 428687., 465829., 502971., 21595.,  61481.,  101367., 141253.,
      181139., 221025., 260911., 300797., 340683., 380569., 420455., 460341.,
      500227., 540113.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  21595.,  2485.,
      6699.,   10913.,  15127.,  19341.,  23555.,  27769.,  31983.,  36197.,
      40411.,  44625.,  48839.,  53053.,  57267.,  61481.,  3955.,   10913.,
      17871.,  24829.,  31787.,  38745.,  45703.,  52661.,  59619.,  66577.,
      73535.,  80493.,  87451.,  94409.,  101367., 5425.,   15127.,  24829.,
      34531.,  44233.,  53935.,  63637.,  73339.,  83041.,  92743.,  102445.,
      112147., 121849., 131551., 141253., 6895.,   19341.,  31787.,  44233.,
      56679.,  69125.,  81571.,  94017.,  106463., 118909., 131355., 143801.,
      156247., 168693., 181139., 8365.,   23555.,  38745.,  53935.,  69125.,
      84315.,  99505.,  114695., 129885., 145075., 160265., 175455., 190645.,
      205835., 221025., 9835.,   27769.,  45703.,  63637.,  81571.,  99505.,
      117439., 135373., 153307., 171241., 189175., 207109., 225043., 242977.,
      260911., 11305.,  31983.,  52661.,  73339.,  94017.,  114695., 135373.,
      156051., 176729., 197407., 218085., 238763., 259441., 280119., 300797.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 340683., 14245.,
      40411.,  66577.,  92743.,  118909., 145075., 171241., 197407., 223573.,
      249739., 275905., 302071., 328237., 354403., 380569., 15715.,  44625.,
      73535.,  102445., 131355., 160265., 189175., 218085., 246995., 275905.,
      304815., 333725., 362635., 391545., 420455., 17185.,  48839.,  80493.,
      112147., 143801., 175455., 207109., 238763., 270417., 302071., 333725.,
      365379., 397033., 428687., 460341., 18655.,  53053.,  87451.,  121849.,
      156247., 190645., 225043., 259441., 293839., 328237., 362635., 397033.,
      431431., 465829., 500227., 20125.,  57267.,  94409.,  131551., 168693.,
      205835., 242977., 280119., 317261., 354403., 391545., 428687., 465829.,
      502971., 540113., 21595.,  61481.,  101367., 141253., 181139., 221025.,
      260911., 300797., 340683., 380569., 420455., 460341., 500227., 540113.,
      579999.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  21595.,  23065.,
      2485.,   6699.,   10913.,  15127.,  19341.,  23555.,  27769.,  31983.,
      36197.,  40411.,  44625.,  48839.,  53053.,  57267.,  61481.,  65695.,
      3955.,   10913.,  17871.,  24829.,  31787.,  38745.,  45703.,  52661.,
      59619.,  66577.,  73535.,  80493.,  87451.,  94409.,  101367., 108325.,
      5425.,   15127.,  24829.,  34531.,  44233.,  53935.,  63637.,  73339.,
      83041.,  92743.,  102445., 112147., 121849., 131551., 141253., 150955.,
      6895.,   19341.,  31787.,  44233.,  56679.,  69125.,  81571.,  94017.,
      106463., 118909., 131355., 143801., 156247., 168693., 181139., 193585.,
      8365.,   23555.,  38745.,  53935.,  69125.,  84315.,  99505.,  114695.,
      129885., 145075., 160265., 175455., 190645., 205835., 221025., 236215.,
      9835.,   27769.,  45703.,  63637.,  81571.,  99505.,  117439., 135373.,
      153307., 171241., 189175., 207109., 225043., 242977., 260911., 278845.,
      11305.,  31983.,  52661.,  73339.,  94017.,  114695., 135373., 156051.,
      176729., 197407., 218085., 238763., 259441., 280119., 300797., 321475.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 340683., 364105.,
      14245.,  40411.,  66577.,  92743.,  118909., 145075., 171241., 197407.,
      223573., 249739., 275905., 302071., 328237., 354403., 380569., 406735.,
      15715.,  44625.,  73535.,  102445., 131355., 160265., 189175., 218085.,
      246995., 275905., 304815., 333725., 362635., 391545., 420455., 449365.,
      17185.,  48839.,  80493.,  112147., 143801., 175455., 207109., 238763.,
      270417., 302071., 333725., 365379., 397033., 428687., 460341., 491995.,
      18655.,  53053.,  87451.,  121849., 156247., 190645., 225043., 259441.,
      293839., 328237., 362635., 397033., 431431., 465829., 500227., 534625.,
      20125.,  57267.,  94409.,  131551., 168693., 205835., 242977., 280119.,
      317261., 354403., 391545., 428687., 465829., 502971., 540113., 577255.,
      21595.,  61481.,  101367., 141253., 181139., 221025., 260911., 300797.,
      340683., 380569., 420455., 460341., 500227., 540113., 579999., 619885.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  3040.,   8215.,
      13390.,  18565.,  23740.,  28915.,  34090.,  39265.,  44440.,  49615.,
      54790.,  59965.,  65140.,  70315.,  4840.,   13390.,  21940.,  30490.,
      39040.,  47590.,  56140.,  64690.,  73240.,  81790.,  90340.,  98890.,
      107440., 115990., 6640.,   18565.,  30490.,  42415.,  54340.,  66265.,
      78190.,  90115.,  102040., 113965., 125890., 137815., 149740., 161665.,
      8440.,   23740.,  39040.,  54340.,  69640.,  84940.,  100240., 115540.,
      130840., 146140., 161440., 176740., 192040., 207340., 10240.,  28915.,
      47590.,  66265.,  84940.,  103615., 122290., 140965., 159640., 178315.,
      196990., 215665., 234340., 253015., 12040.,  34090.,  56140.,  78190.,
      100240., 122290., 144340., 166390., 188440., 210490., 232540., 254590.,
      276640., 298690., 13840.,  39265.,  64690.,  90115.,  115540., 140965.,
      166390., 191815., 217240., 242665., 268090., 293515., 318940., 344365.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 17440.,  49615.,
      81790.,  113965., 146140., 178315., 210490., 242665., 274840., 307015.,
      339190., 371365., 403540., 435715., 19240.,  54790.,  90340.,  125890.,
      161440., 196990., 232540., 268090., 303640., 339190., 374740., 410290.,
      445840., 481390., 21040.,  59965.,  98890.,  137815., 176740., 215665.,
      254590., 293515., 332440., 371365., 410290., 449215., 488140., 527065.,
      22840.,  65140.,  107440., 149740., 192040., 234340., 276640., 318940.,
      361240., 403540., 445840., 488140., 530440., 572740., 24640.,  70315.,
      115990., 161665., 207340., 253015., 298690., 344365., 390040., 435715.,
      481390., 527065., 572740., 618415., 26440.,  75490.,  124540., 173590.,
      222640., 271690., 320740., 369790., 418840., 467890., 516940., 565990.,
      615040., 664090.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  26440.,  3040.,
      8215.,   13390.,  18565.,  23740.,  28915.,  34090.,  39265.,  44440.,
      49615.,  54790.,  59965.,  65140.,  70315.,  75490.,  4840.,   13390.,
      21940.,  30490.,  39040.,  47590.,  56140.,  64690.,  73240.,  81790.,
      90340.,  98890.,  107440., 115990., 124540., 6640.,   18565.,  30490.,
      42415.,  54340.,  66265.,  78190.,  90115.,  102040., 113965., 125890.,
      137815., 149740., 161665., 173590., 8440.,   23740.,  39040.,  54340.,
      69640.,  84940.,  100240., 115540., 130840., 146140., 161440., 176740.,
      192040., 207340., 222640., 10240.,  28915.,  47590.,  66265.,  84940.,
      103615., 122290., 140965., 159640., 178315., 196990., 215665., 234340.,
      253015., 271690., 12040.,  34090.,  56140.,  78190.,  100240., 122290.,
      144340., 166390., 188440., 210490., 232540., 254590., 276640., 298690.,
      320740., 13840.,  39265.,  64690.,  90115.,  115540., 140965., 166390.,
      191815., 217240., 242665., 268090., 293515., 318940., 344365., 369790.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 418840., 17440.,
      49615.,  81790.,  113965., 146140., 178315., 210490., 242665., 274840.,
      307015., 339190., 371365., 403540., 435715., 467890., 19240.,  54790.,
      90340.,  125890., 161440., 196990., 232540., 268090., 303640., 339190.,
      374740., 410290., 445840., 481390., 516940., 21040.,  59965.,  98890.,
      137815., 176740., 215665., 254590., 293515., 332440., 371365., 410290.,
      449215., 488140., 527065., 565990., 22840.,  65140.,  107440., 149740.,
      192040., 234340., 276640., 318940., 361240., 403540., 445840., 488140.,
      530440., 572740., 615040., 24640.,  70315.,  115990., 161665., 207340.,
      253015., 298690., 344365., 390040., 435715., 481390., 527065., 572740.,
      618415., 664090., 26440.,  75490.,  124540., 173590., 222640., 271690.,
      320740., 369790., 418840., 467890., 516940., 565990., 615040., 664090.,
      713140.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  26440.,  28240.,
      3040.,   8215.,   13390.,  18565.,  23740.,  28915.,  34090.,  39265.,
      44440.,  49615.,  54790.,  59965.,  65140.,  70315.,  75490.,  80665.,
      4840.,   13390.,  21940.,  30490.,  39040.,  47590.,  56140.,  64690.,
      73240.,  81790.,  90340.,  98890.,  107440., 115990., 124540., 133090.,
      6640.,   18565.,  30490.,  42415.,  54340.,  66265.,  78190.,  90115.,
      102040., 113965., 125890., 137815., 149740., 161665., 173590., 185515.,
      8440.,   23740.,  39040.,  54340.,  69640.,  84940.,  100240., 115540.,
      130840., 146140., 161440., 176740., 192040., 207340., 222640., 237940.,
      10240.,  28915.,  47590.,  66265.,  84940.,  103615., 122290., 140965.,
      159640., 178315., 196990., 215665., 234340., 253015., 271690., 290365.,
      12040.,  34090.,  56140.,  78190.,  100240., 122290., 144340., 166390.,
      188440., 210490., 232540., 254590., 276640., 298690., 320740., 342790.,
      13840.,  39265.,  64690.,  90115.,  115540., 140965., 166390., 191815.,
      217240., 242665., 268090., 293515., 318940., 344365., 369790., 395215.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 418840., 447640.,
      17440.,  49615.,  81790.,  113965., 146140., 178315., 210490., 242665.,
      274840., 307015., 339190., 371365., 403540., 435715., 467890., 500065.,
      19240.,  54790.,  90340.,  125890., 161440., 196990., 232540., 268090.,
      303640., 339190., 374740., 410290., 445840., 481390., 516940., 552490.,
      21040.,  59965.,  98890.,  137815., 176740., 215665., 254590., 293515.,
      332440., 371365., 410290., 449215., 488140., 527065., 565990., 604915.,
      22840.,  65140.,  107440., 149740., 192040., 234340., 276640., 318940.,
      361240., 403540., 445840., 488140., 530440., 572740., 615040., 657340.,
      24640.,  70315.,  115990., 161665., 207340., 253015., 298690., 344365.,
      390040., 435715., 481390., 527065., 572740., 618415., 664090., 709765.,
      26440.,  75490.,  124540., 173590., 222640., 271690., 320740., 369790.,
      418840., 467890., 516940., 565990., 615040., 664090., 713140., 762190.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  3672.,   9944.,
      16216.,  22488.,  28760.,  35032.,  41304.,  47576.,  53848.,  60120.,
      66392.,  72664.,  78936.,  85208.,  5848.,   16216.,  26584.,  36952.,
      47320.,  57688.,  68056.,  78424.,  88792.,  99160.,  109528., 119896.,
      130264., 140632., 8024.,   22488.,  36952.,  51416.,  65880.,  80344.,
      94808.,  109272., 123736., 138200., 152664., 167128., 181592., 196056.,
      10200.,  28760.,  47320.,  65880.,  84440.,  103000., 121560., 140120.,
      158680., 177240., 195800., 214360., 232920., 251480., 12376.,  35032.,
      57688.,  80344.,  103000., 125656., 148312., 170968., 193624., 216280.,
      238936., 261592., 284248., 306904., 14552.,  41304.,  68056.,  94808.,
      121560., 148312., 175064., 201816., 228568., 255320., 282072., 308824.,
      335576., 362328., 16728.,  47576.,  78424.,  109272., 140120., 170968.,
      201816., 232664., 263512., 294360., 325208., 356056., 386904., 417752.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 21080.,  60120.,
      99160.,  138200., 177240., 216280., 255320., 294360., 333400., 372440.,
      411480., 450520., 489560., 528600., 23256.,  66392.,  109528., 152664.,
      195800., 238936., 282072., 325208., 368344., 411480., 454616., 497752.,
      540888., 584024., 25432.,  72664.,  119896., 167128., 214360., 261592.,
      308824., 356056., 403288., 450520., 497752., 544984., 592216., 639448.,
      27608.,  78936.,  130264., 181592., 232920., 284248., 335576., 386904.,
      438232., 489560., 540888., 592216., 643544., 694872., 29784.,  85208.,
      140632., 196056., 251480., 306904., 362328., 417752., 473176., 528600.,
      584024., 639448., 694872., 750296., 31960.,  91480.,  151000., 210520.,
      270040., 329560., 389080., 448600., 508120., 567640., 627160., 686680.,
      746200., 805720.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  31960.,  3672.,
      9944.,   16216.,  22488.,  28760.,  35032.,  41304.,  47576.,  53848.,
      60120.,  66392.,  72664.,  78936.,  85208.,  91480.,  5848.,   16216.,
      26584.,  36952.,  47320.,  57688.,  68056.,  78424.,  88792.,  99160.,
      109528., 119896., 130264., 140632., 151000., 8024.,   22488.,  36952.,
      51416.,  65880.,  80344.,  94808.,  109272., 123736., 138200., 152664.,
      167128., 181592., 196056., 210520., 10200.,  28760.,  47320.,  65880.,
      84440.,  103000., 121560., 140120., 158680., 177240., 195800., 214360.,
      232920., 251480., 270040., 12376.,  35032.,  57688.,  80344.,  103000.,
      125656., 148312., 170968., 193624., 216280., 238936., 261592., 284248.,
      306904., 329560., 14552.,  41304.,  68056.,  94808.,  121560., 148312.,
      175064., 201816., 228568., 255320., 282072., 308824., 335576., 362328.,
      389080., 16728.,  47576.,  78424.,  109272., 140120., 170968., 201816.,
      232664., 263512., 294360., 325208., 356056., 386904., 417752., 448600.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 508120., 21080.,
      60120.,  99160.,  138200., 177240., 216280., 255320., 294360., 333400.,
      372440., 411480., 450520., 489560., 528600., 567640., 23256.,  66392.,
      109528., 152664., 195800., 238936., 282072., 325208., 368344., 411480.,
      454616., 497752., 540888., 584024., 627160., 25432.,  72664.,  119896.,
      167128., 214360., 261592., 308824., 356056., 403288., 450520., 497752.,
      544984., 592216., 639448., 686680., 27608.,  78936.,  130264., 181592.,
      232920., 284248., 335576., 386904., 438232., 489560., 540888., 592216.,
      643544., 694872., 746200., 29784.,  85208.,  140632., 196056., 251480.,
      306904., 362328., 417752., 473176., 528600., 584024., 639448., 694872.,
      750296., 805720., 31960.,  91480.,  151000., 210520., 270040., 329560.,
      389080., 448600., 508120., 567640., 627160., 686680., 746200., 805720.,
      865240.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M15xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  31960.,  34136.,
      3672.,   9944.,   16216.,  22488.,  28760.,  35032.,  41304.,  47576.,
      53848.,  60120.,  66392.,  72664.,  78936.,  85208.,  91480.,  97752.,
      5848.,   16216.,  26584.,  36952.,  47320.,  57688.,  68056.,  78424.,
      88792.,  99160.,  109528., 119896., 130264., 140632., 151000., 161368.,
      8024.,   22488.,  36952.,  51416.,  65880.,  80344.,  94808.,  109272.,
      123736., 138200., 152664., 167128., 181592., 196056., 210520., 224984.,
      10200.,  28760.,  47320.,  65880.,  84440.,  103000., 121560., 140120.,
      158680., 177240., 195800., 214360., 232920., 251480., 270040., 288600.,
      12376.,  35032.,  57688.,  80344.,  103000., 125656., 148312., 170968.,
      193624., 216280., 238936., 261592., 284248., 306904., 329560., 352216.,
      14552.,  41304.,  68056.,  94808.,  121560., 148312., 175064., 201816.,
      228568., 255320., 282072., 308824., 335576., 362328., 389080., 415832.,
      16728.,  47576.,  78424.,  109272., 140120., 170968., 201816., 232664.,
      263512., 294360., 325208., 356056., 386904., 417752., 448600., 479448.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 508120., 543064.,
      21080.,  60120.,  99160.,  138200., 177240., 216280., 255320., 294360.,
      333400., 372440., 411480., 450520., 489560., 528600., 567640., 606680.,
      23256.,  66392.,  109528., 152664., 195800., 238936., 282072., 325208.,
      368344., 411480., 454616., 497752., 540888., 584024., 627160., 670296.,
      25432.,  72664.,  119896., 167128., 214360., 261592., 308824., 356056.,
      403288., 450520., 497752., 544984., 592216., 639448., 686680., 733912.,
      27608.,  78936.,  130264., 181592., 232920., 284248., 335576., 386904.,
      438232., 489560., 540888., 592216., 643544., 694872., 746200., 797528.,
      29784.,  85208.,  140632., 196056., 251480., 306904., 362328., 417752.,
      473176., 528600., 584024., 639448., 694872., 750296., 805720., 861144.,
      31960.,  91480.,  151000., 210520., 270040., 329560., 389080., 448600.,
      508120., 567640., 627160., 686680., 746200., 805720., 865240., 924760.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  2485.,   6699.,
      10913.,  15127.,  19341.,  23555.,  27769.,  31983.,  36197.,  40411.,
      44625.,  48839.,  53053.,  57267.,  3955.,   10913.,  17871.,  24829.,
      31787.,  38745.,  45703.,  52661.,  59619.,  66577.,  73535.,  80493.,
      87451.,  94409.,  5425.,   15127.,  24829.,  34531.,  44233.,  53935.,
      63637.,  73339.,  83041.,  92743.,  102445., 112147., 121849., 131551.,
      6895.,   19341.,  31787.,  44233.,  56679.,  69125.,  81571.,  94017.,
      106463., 118909., 131355., 143801., 156247., 168693., 8365.,   23555.,
      38745.,  53935.,  69125.,  84315.,  99505.,  114695., 129885., 145075.,
      160265., 175455., 190645., 205835., 9835.,   27769.,  45703.,  63637.,
      81571.,  99505.,  117439., 135373., 153307., 171241., 189175., 207109.,
      225043., 242977., 11305.,  31983.,  52661.,  73339.,  94017.,  114695.,
      135373., 156051., 176729., 197407., 218085., 238763., 259441., 280119.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 14245.,  40411.,
      66577.,  92743.,  118909., 145075., 171241., 197407., 223573., 249739.,
      275905., 302071., 328237., 354403., 15715.,  44625.,  73535.,  102445.,
      131355., 160265., 189175., 218085., 246995., 275905., 304815., 333725.,
      362635., 391545., 17185.,  48839.,  80493.,  112147., 143801., 175455.,
      207109., 238763., 270417., 302071., 333725., 365379., 397033., 428687.,
      18655.,  53053.,  87451.,  121849., 156247., 190645., 225043., 259441.,
      293839., 328237., 362635., 397033., 431431., 465829., 20125.,  57267.,
      94409.,  131551., 168693., 205835., 242977., 280119., 317261., 354403.,
      391545., 428687., 465829., 502971., 21595.,  61481.,  101367., 141253.,
      181139., 221025., 260911., 300797., 340683., 380569., 420455., 460341.,
      500227., 540113., 23065.,  65695.,  108325., 150955., 193585., 236215.,
      278845., 321475., 364105., 406735., 449365., 491995., 534625., 577255.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  21595.,  2485.,
      6699.,   10913.,  15127.,  19341.,  23555.,  27769.,  31983.,  36197.,
      40411.,  44625.,  48839.,  53053.,  57267.,  61481.,  3955.,   10913.,
      17871.,  24829.,  31787.,  38745.,  45703.,  52661.,  59619.,  66577.,
      73535.,  80493.,  87451.,  94409.,  101367., 5425.,   15127.,  24829.,
      34531.,  44233.,  53935.,  63637.,  73339.,  83041.,  92743.,  102445.,
      112147., 121849., 131551., 141253., 6895.,   19341.,  31787.,  44233.,
      56679.,  69125.,  81571.,  94017.,  106463., 118909., 131355., 143801.,
      156247., 168693., 181139., 8365.,   23555.,  38745.,  53935.,  69125.,
      84315.,  99505.,  114695., 129885., 145075., 160265., 175455., 190645.,
      205835., 221025., 9835.,   27769.,  45703.,  63637.,  81571.,  99505.,
      117439., 135373., 153307., 171241., 189175., 207109., 225043., 242977.,
      260911., 11305.,  31983.,  52661.,  73339.,  94017.,  114695., 135373.,
      156051., 176729., 197407., 218085., 238763., 259441., 280119., 300797.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 340683., 14245.,
      40411.,  66577.,  92743.,  118909., 145075., 171241., 197407., 223573.,
      249739., 275905., 302071., 328237., 354403., 380569., 15715.,  44625.,
      73535.,  102445., 131355., 160265., 189175., 218085., 246995., 275905.,
      304815., 333725., 362635., 391545., 420455., 17185.,  48839.,  80493.,
      112147., 143801., 175455., 207109., 238763., 270417., 302071., 333725.,
      365379., 397033., 428687., 460341., 18655.,  53053.,  87451.,  121849.,
      156247., 190645., 225043., 259441., 293839., 328237., 362635., 397033.,
      431431., 465829., 500227., 20125.,  57267.,  94409.,  131551., 168693.,
      205835., 242977., 280119., 317261., 354403., 391545., 428687., 465829.,
      502971., 540113., 21595.,  61481.,  101367., 141253., 181139., 221025.,
      260911., 300797., 340683., 380569., 420455., 460341., 500227., 540113.,
      579999., 23065.,  65695.,  108325., 150955., 193585., 236215., 278845.,
      321475., 364105., 406735., 449365., 491995., 534625., 577255., 619885.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1015.,   2485.,   3955.,   5425.,   6895.,   8365.,   9835.,   11305.,
      12775.,  14245.,  15715.,  17185.,  18655.,  20125.,  21595.,  23065.,
      2485.,   6699.,   10913.,  15127.,  19341.,  23555.,  27769.,  31983.,
      36197.,  40411.,  44625.,  48839.,  53053.,  57267.,  61481.,  65695.,
      3955.,   10913.,  17871.,  24829.,  31787.,  38745.,  45703.,  52661.,
      59619.,  66577.,  73535.,  80493.,  87451.,  94409.,  101367., 108325.,
      5425.,   15127.,  24829.,  34531.,  44233.,  53935.,  63637.,  73339.,
      83041.,  92743.,  102445., 112147., 121849., 131551., 141253., 150955.,
      6895.,   19341.,  31787.,  44233.,  56679.,  69125.,  81571.,  94017.,
      106463., 118909., 131355., 143801., 156247., 168693., 181139., 193585.,
      8365.,   23555.,  38745.,  53935.,  69125.,  84315.,  99505.,  114695.,
      129885., 145075., 160265., 175455., 190645., 205835., 221025., 236215.,
      9835.,   27769.,  45703.,  63637.,  81571.,  99505.,  117439., 135373.,
      153307., 171241., 189175., 207109., 225043., 242977., 260911., 278845.,
      11305.,  31983.,  52661.,  73339.,  94017.,  114695., 135373., 156051.,
      176729., 197407., 218085., 238763., 259441., 280119., 300797., 321475.,
      12775.,  36197.,  59619.,  83041.,  106463., 129885., 153307., 176729.,
      200151., 223573., 246995., 270417., 293839., 317261., 340683., 364105.,
      14245.,  40411.,  66577.,  92743.,  118909., 145075., 171241., 197407.,
      223573., 249739., 275905., 302071., 328237., 354403., 380569., 406735.,
      15715.,  44625.,  73535.,  102445., 131355., 160265., 189175., 218085.,
      246995., 275905., 304815., 333725., 362635., 391545., 420455., 449365.,
      17185.,  48839.,  80493.,  112147., 143801., 175455., 207109., 238763.,
      270417., 302071., 333725., 365379., 397033., 428687., 460341., 491995.,
      18655.,  53053.,  87451.,  121849., 156247., 190645., 225043., 259441.,
      293839., 328237., 362635., 397033., 431431., 465829., 500227., 534625.,
      20125.,  57267.,  94409.,  131551., 168693., 205835., 242977., 280119.,
      317261., 354403., 391545., 428687., 465829., 502971., 540113., 577255.,
      21595.,  61481.,  101367., 141253., 181139., 221025., 260911., 300797.,
      340683., 380569., 420455., 460341., 500227., 540113., 579999., 619885.,
      23065.,  65695.,  108325., 150955., 193585., 236215., 278845., 321475.,
      364105., 406735., 449365., 491995., 534625., 577255., 619885., 662515.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  3040.,   8215.,
      13390.,  18565.,  23740.,  28915.,  34090.,  39265.,  44440.,  49615.,
      54790.,  59965.,  65140.,  70315.,  4840.,   13390.,  21940.,  30490.,
      39040.,  47590.,  56140.,  64690.,  73240.,  81790.,  90340.,  98890.,
      107440., 115990., 6640.,   18565.,  30490.,  42415.,  54340.,  66265.,
      78190.,  90115.,  102040., 113965., 125890., 137815., 149740., 161665.,
      8440.,   23740.,  39040.,  54340.,  69640.,  84940.,  100240., 115540.,
      130840., 146140., 161440., 176740., 192040., 207340., 10240.,  28915.,
      47590.,  66265.,  84940.,  103615., 122290., 140965., 159640., 178315.,
      196990., 215665., 234340., 253015., 12040.,  34090.,  56140.,  78190.,
      100240., 122290., 144340., 166390., 188440., 210490., 232540., 254590.,
      276640., 298690., 13840.,  39265.,  64690.,  90115.,  115540., 140965.,
      166390., 191815., 217240., 242665., 268090., 293515., 318940., 344365.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 17440.,  49615.,
      81790.,  113965., 146140., 178315., 210490., 242665., 274840., 307015.,
      339190., 371365., 403540., 435715., 19240.,  54790.,  90340.,  125890.,
      161440., 196990., 232540., 268090., 303640., 339190., 374740., 410290.,
      445840., 481390., 21040.,  59965.,  98890.,  137815., 176740., 215665.,
      254590., 293515., 332440., 371365., 410290., 449215., 488140., 527065.,
      22840.,  65140.,  107440., 149740., 192040., 234340., 276640., 318940.,
      361240., 403540., 445840., 488140., 530440., 572740., 24640.,  70315.,
      115990., 161665., 207340., 253015., 298690., 344365., 390040., 435715.,
      481390., 527065., 572740., 618415., 26440.,  75490.,  124540., 173590.,
      222640., 271690., 320740., 369790., 418840., 467890., 516940., 565990.,
      615040., 664090., 28240.,  80665.,  133090., 185515., 237940., 290365.,
      342790., 395215., 447640., 500065., 552490., 604915., 657340., 709765.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  26440.,  3040.,
      8215.,   13390.,  18565.,  23740.,  28915.,  34090.,  39265.,  44440.,
      49615.,  54790.,  59965.,  65140.,  70315.,  75490.,  4840.,   13390.,
      21940.,  30490.,  39040.,  47590.,  56140.,  64690.,  73240.,  81790.,
      90340.,  98890.,  107440., 115990., 124540., 6640.,   18565.,  30490.,
      42415.,  54340.,  66265.,  78190.,  90115.,  102040., 113965., 125890.,
      137815., 149740., 161665., 173590., 8440.,   23740.,  39040.,  54340.,
      69640.,  84940.,  100240., 115540., 130840., 146140., 161440., 176740.,
      192040., 207340., 222640., 10240.,  28915.,  47590.,  66265.,  84940.,
      103615., 122290., 140965., 159640., 178315., 196990., 215665., 234340.,
      253015., 271690., 12040.,  34090.,  56140.,  78190.,  100240., 122290.,
      144340., 166390., 188440., 210490., 232540., 254590., 276640., 298690.,
      320740., 13840.,  39265.,  64690.,  90115.,  115540., 140965., 166390.,
      191815., 217240., 242665., 268090., 293515., 318940., 344365., 369790.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 418840., 17440.,
      49615.,  81790.,  113965., 146140., 178315., 210490., 242665., 274840.,
      307015., 339190., 371365., 403540., 435715., 467890., 19240.,  54790.,
      90340.,  125890., 161440., 196990., 232540., 268090., 303640., 339190.,
      374740., 410290., 445840., 481390., 516940., 21040.,  59965.,  98890.,
      137815., 176740., 215665., 254590., 293515., 332440., 371365., 410290.,
      449215., 488140., 527065., 565990., 22840.,  65140.,  107440., 149740.,
      192040., 234340., 276640., 318940., 361240., 403540., 445840., 488140.,
      530440., 572740., 615040., 24640.,  70315.,  115990., 161665., 207340.,
      253015., 298690., 344365., 390040., 435715., 481390., 527065., 572740.,
      618415., 664090., 26440.,  75490.,  124540., 173590., 222640., 271690.,
      320740., 369790., 418840., 467890., 516940., 565990., 615040., 664090.,
      713140., 28240.,  80665.,  133090., 185515., 237940., 290365., 342790.,
      395215., 447640., 500065., 552490., 604915., 657340., 709765., 762190.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1240.,   3040.,   4840.,   6640.,   8440.,   10240.,  12040.,  13840.,
      15640.,  17440.,  19240.,  21040.,  22840.,  24640.,  26440.,  28240.,
      3040.,   8215.,   13390.,  18565.,  23740.,  28915.,  34090.,  39265.,
      44440.,  49615.,  54790.,  59965.,  65140.,  70315.,  75490.,  80665.,
      4840.,   13390.,  21940.,  30490.,  39040.,  47590.,  56140.,  64690.,
      73240.,  81790.,  90340.,  98890.,  107440., 115990., 124540., 133090.,
      6640.,   18565.,  30490.,  42415.,  54340.,  66265.,  78190.,  90115.,
      102040., 113965., 125890., 137815., 149740., 161665., 173590., 185515.,
      8440.,   23740.,  39040.,  54340.,  69640.,  84940.,  100240., 115540.,
      130840., 146140., 161440., 176740., 192040., 207340., 222640., 237940.,
      10240.,  28915.,  47590.,  66265.,  84940.,  103615., 122290., 140965.,
      159640., 178315., 196990., 215665., 234340., 253015., 271690., 290365.,
      12040.,  34090.,  56140.,  78190.,  100240., 122290., 144340., 166390.,
      188440., 210490., 232540., 254590., 276640., 298690., 320740., 342790.,
      13840.,  39265.,  64690.,  90115.,  115540., 140965., 166390., 191815.,
      217240., 242665., 268090., 293515., 318940., 344365., 369790., 395215.,
      15640.,  44440.,  73240.,  102040., 130840., 159640., 188440., 217240.,
      246040., 274840., 303640., 332440., 361240., 390040., 418840., 447640.,
      17440.,  49615.,  81790.,  113965., 146140., 178315., 210490., 242665.,
      274840., 307015., 339190., 371365., 403540., 435715., 467890., 500065.,
      19240.,  54790.,  90340.,  125890., 161440., 196990., 232540., 268090.,
      303640., 339190., 374740., 410290., 445840., 481390., 516940., 552490.,
      21040.,  59965.,  98890.,  137815., 176740., 215665., 254590., 293515.,
      332440., 371365., 410290., 449215., 488140., 527065., 565990., 604915.,
      22840.,  65140.,  107440., 149740., 192040., 234340., 276640., 318940.,
      361240., 403540., 445840., 488140., 530440., 572740., 615040., 657340.,
      24640.,  70315.,  115990., 161665., 207340., 253015., 298690., 344365.,
      390040., 435715., 481390., 527065., 572740., 618415., 664090., 709765.,
      26440.,  75490.,  124540., 173590., 222640., 271690., 320740., 369790.,
      418840., 467890., 516940., 565990., 615040., 664090., 713140., 762190.,
      28240.,  80665.,  133090., 185515., 237940., 290365., 342790., 395215.,
      447640., 500065., 552490., 604915., 657340., 709765., 762190., 814615.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  3672.,   9944.,
      16216.,  22488.,  28760.,  35032.,  41304.,  47576.,  53848.,  60120.,
      66392.,  72664.,  78936.,  85208.,  5848.,   16216.,  26584.,  36952.,
      47320.,  57688.,  68056.,  78424.,  88792.,  99160.,  109528., 119896.,
      130264., 140632., 8024.,   22488.,  36952.,  51416.,  65880.,  80344.,
      94808.,  109272., 123736., 138200., 152664., 167128., 181592., 196056.,
      10200.,  28760.,  47320.,  65880.,  84440.,  103000., 121560., 140120.,
      158680., 177240., 195800., 214360., 232920., 251480., 12376.,  35032.,
      57688.,  80344.,  103000., 125656., 148312., 170968., 193624., 216280.,
      238936., 261592., 284248., 306904., 14552.,  41304.,  68056.,  94808.,
      121560., 148312., 175064., 201816., 228568., 255320., 282072., 308824.,
      335576., 362328., 16728.,  47576.,  78424.,  109272., 140120., 170968.,
      201816., 232664., 263512., 294360., 325208., 356056., 386904., 417752.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 21080.,  60120.,
      99160.,  138200., 177240., 216280., 255320., 294360., 333400., 372440.,
      411480., 450520., 489560., 528600., 23256.,  66392.,  109528., 152664.,
      195800., 238936., 282072., 325208., 368344., 411480., 454616., 497752.,
      540888., 584024., 25432.,  72664.,  119896., 167128., 214360., 261592.,
      308824., 356056., 403288., 450520., 497752., 544984., 592216., 639448.,
      27608.,  78936.,  130264., 181592., 232920., 284248., 335576., 386904.,
      438232., 489560., 540888., 592216., 643544., 694872., 29784.,  85208.,
      140632., 196056., 251480., 306904., 362328., 417752., 473176., 528600.,
      584024., 639448., 694872., 750296., 31960.,  91480.,  151000., 210520.,
      270040., 329560., 389080., 448600., 508120., 567640., 627160., 686680.,
      746200., 805720., 34136.,  97752.,  161368., 224984., 288600., 352216.,
      415832., 479448., 543064., 606680., 670296., 733912., 797528., 861144.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  31960.,  3672.,
      9944.,   16216.,  22488.,  28760.,  35032.,  41304.,  47576.,  53848.,
      60120.,  66392.,  72664.,  78936.,  85208.,  91480.,  5848.,   16216.,
      26584.,  36952.,  47320.,  57688.,  68056.,  78424.,  88792.,  99160.,
      109528., 119896., 130264., 140632., 151000., 8024.,   22488.,  36952.,
      51416.,  65880.,  80344.,  94808.,  109272., 123736., 138200., 152664.,
      167128., 181592., 196056., 210520., 10200.,  28760.,  47320.,  65880.,
      84440.,  103000., 121560., 140120., 158680., 177240., 195800., 214360.,
      232920., 251480., 270040., 12376.,  35032.,  57688.,  80344.,  103000.,
      125656., 148312., 170968., 193624., 216280., 238936., 261592., 284248.,
      306904., 329560., 14552.,  41304.,  68056.,  94808.,  121560., 148312.,
      175064., 201816., 228568., 255320., 282072., 308824., 335576., 362328.,
      389080., 16728.,  47576.,  78424.,  109272., 140120., 170968., 201816.,
      232664., 263512., 294360., 325208., 356056., 386904., 417752., 448600.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 508120., 21080.,
      60120.,  99160.,  138200., 177240., 216280., 255320., 294360., 333400.,
      372440., 411480., 450520., 489560., 528600., 567640., 23256.,  66392.,
      109528., 152664., 195800., 238936., 282072., 325208., 368344., 411480.,
      454616., 497752., 540888., 584024., 627160., 25432.,  72664.,  119896.,
      167128., 214360., 261592., 308824., 356056., 403288., 450520., 497752.,
      544984., 592216., 639448., 686680., 27608.,  78936.,  130264., 181592.,
      232920., 284248., 335576., 386904., 438232., 489560., 540888., 592216.,
      643544., 694872., 746200., 29784.,  85208.,  140632., 196056., 251480.,
      306904., 362328., 417752., 473176., 528600., 584024., 639448., 694872.,
      750296., 805720., 31960.,  91480.,  151000., 210520., 270040., 329560.,
      389080., 448600., 508120., 567640., 627160., 686680., 746200., 805720.,
      865240., 34136.,  97752.,  161368., 224984., 288600., 352216., 415832.,
      479448., 543064., 606680., 670296., 733912., 797528., 861144., 924760.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseTrue, M16xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496.,   3672.,   5848.,   8024.,   10200.,  12376.,  14552.,  16728.,
      18904.,  21080.,  23256.,  25432.,  27608.,  29784.,  31960.,  34136.,
      3672.,   9944.,   16216.,  22488.,  28760.,  35032.,  41304.,  47576.,
      53848.,  60120.,  66392.,  72664.,  78936.,  85208.,  91480.,  97752.,
      5848.,   16216.,  26584.,  36952.,  47320.,  57688.,  68056.,  78424.,
      88792.,  99160.,  109528., 119896., 130264., 140632., 151000., 161368.,
      8024.,   22488.,  36952.,  51416.,  65880.,  80344.,  94808.,  109272.,
      123736., 138200., 152664., 167128., 181592., 196056., 210520., 224984.,
      10200.,  28760.,  47320.,  65880.,  84440.,  103000., 121560., 140120.,
      158680., 177240., 195800., 214360., 232920., 251480., 270040., 288600.,
      12376.,  35032.,  57688.,  80344.,  103000., 125656., 148312., 170968.,
      193624., 216280., 238936., 261592., 284248., 306904., 329560., 352216.,
      14552.,  41304.,  68056.,  94808.,  121560., 148312., 175064., 201816.,
      228568., 255320., 282072., 308824., 335576., 362328., 389080., 415832.,
      16728.,  47576.,  78424.,  109272., 140120., 170968., 201816., 232664.,
      263512., 294360., 325208., 356056., 386904., 417752., 448600., 479448.,
      18904.,  53848.,  88792.,  123736., 158680., 193624., 228568., 263512.,
      298456., 333400., 368344., 403288., 438232., 473176., 508120., 543064.,
      21080.,  60120.,  99160.,  138200., 177240., 216280., 255320., 294360.,
      333400., 372440., 411480., 450520., 489560., 528600., 567640., 606680.,
      23256.,  66392.,  109528., 152664., 195800., 238936., 282072., 325208.,
      368344., 411480., 454616., 497752., 540888., 584024., 627160., 670296.,
      25432.,  72664.,  119896., 167128., 214360., 261592., 308824., 356056.,
      403288., 450520., 497752., 544984., 592216., 639448., 686680., 733912.,
      27608.,  78936.,  130264., 181592., 232920., 284248., 335576., 386904.,
      438232., 489560., 540888., 592216., 643544., 694872., 746200., 797528.,
      29784.,  85208.,  140632., 196056., 251480., 306904., 362328., 417752.,
      473176., 528600., 584024., 639448., 694872., 750296., 805720., 861144.,
      31960.,  91480.,  151000., 210520., 270040., 329560., 389080., 448600.,
      508120., 567640., 627160., 686680., 746200., 805720., 865240., 924760.,
      34136.,  97752.,  161368., 224984., 288600., 352216., 415832., 479448.,
      543064., 606680., 670296., 733912., 797528., 861144., 924760., 988376.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}